/* layui界面框架 */
/* 引入弹出框 */
layui.config({
	  base: $config.resUrl+'other/' //配置 layui 第三方扩展组件存放的基础目录
}).extend({
  ajaxExtention:'js/ajaxExtention',//加载自定义扩展，每个业务js都需要加载这个ajax扩展
  $tool:'js/tool',
  $api:'js/api',
  dtree: 'layui_ext/dtree/dtree' //定义该组件模块名
}).use(['element','form','layer','laydate','table','dtree','ajaxExtention','$tool','$api'], function(){ //独立版的layer无需执行这一句
  var $ = layui.jquery,
	  dtree = layui.dtree,
	  form = layui.form,
	  layer = layui.layer,
	  table = layui.table,
	  $tool = layui.$tool,
	  $api = layui.$api;
  var tableIns;
  var DTree = dtree.render({
	  elem: "#deptTreefromUser",  //绑定元素
	  url: "/sys/dept/tree.json",  //异步接口
	  dot: false,
	  toolbar: true,
	  done: function(data, obj){
		    $("#search_btn").unbind("click");
		    $("#search_btn").click(function(){
		      var value = $("#searchInput").val();
		      if(value){
		        var flag = DTree.searchNode(value); // 内置方法查找节点
		        if (!flag) {layer.msg("该名称节点不存在！", {icon:5});}
		      } else {
		        DTree.menubarMethod().refreshTree(); // 内置方法刷新树
		      }
		    });
		  }
	});
    //单击节点 监听事件
    dtree.on("node('deptTreefromUser')" ,function(param){
	  //layer.msg(JSON.stringify(param));
      $("#deptId").val(param.param.nodeId);
	  setTable(param.param.nodeId);
	});
      
  $('#layerDemo .layerDemo-a').on('click', function(){
	  /*var deptId = $("#deptId").val();
	  if(deptId == "" || deptId == "undefined"){
		  layer.msg("请先选择机构再进行用户添加。");
		  return;
	  }*/
	  //示范一个公告层
	  layer.open({
		 id:"userSaveOpen",
	   	 type: 2,
	   	 title: '新增用户',
   	     shadeClose: true,
   	     shade: false,
   	     maxmin: true, //开启最大化最小化按钮
   	  	 shade: 0.8, //遮罩
   	  	 anim: 5,//动画方式
   	     area: ['893px', '500px'],
   	     content: '/sys/user/save.page',
   	     success: function(layero, index){
   	    	setTimeout(function () {
                layui.layer.tips('点击此处返回用户列表', '.layui-layer-setwin .layui-layer-close', {
                    tips: 2
                });
            }, 500);
   	     }
	   });
  });
  
  
  //监听工具条
table.on('tool(demo)', function(obj){
    var data = obj.data;
    if(obj.event === 'detail'){
    	openPage("detail","用户详情",data);
    } else if(obj.event === 'del'){
      layer.confirm('真的删除行么', function(index){
        $api.UserDelete({id:data.id},function(result){
        	layer.msg(result.msg,{time:1000},function(){
                //obj.del(); //删除对应行（tr）的DOM结构
                //重新加载表格
                tableIns.reload();
            });
        });
        layer.close(index);
      });
    } else if(obj.event === 'edit'){
    	openPage("edit","编辑用户",data);
    }
});
  
//打开新增、编辑弹出界面
function openPage(eventName,title,data){
	layer.open({
		id:"user"+eventName,
		type: 2,
		title: title,
		shadeClose: true,
		shade: false,
		maxmin: true, //开启最大化最小化按钮
		shade: 0.8, //遮罩
		anim: 5,//动画方式
		area: ['893px', '500px'],
		content: '/sys/user/edit.page',
		success: function(layero, index){
		var body = layui.layer.getChildFrame('body', index);
	
		//详情界面隐藏按钮
		if("detail" == eventName){
	    	body.find(":button").each(function(){
	    		$(this).hide();
			});
	    	body.find(":input").each(function(){
	    		$(this).addClass("layui-btn-disabled");
			});
		}
	
		body.find("[name=id]").val(data.id);
		body.find("[name=deptId]").val(data.deptId);
		body.find("[name=userName]").val(data.userName);
		body.find("[name=password]").val(data.password);
		body.find("[name=loginNo]").val(data.loginNo);
		body.find("[name=telephone]").val(data.telephone);
		body.find("[name=mail]").val(data.mail);
		body.find("[name=remark]").val(data.remark);
		body.find("[name=operator]").val(data.operator);
		body.find("[name=operateTime]").val($tool.getMyDate(data.operateTime));
		
		//根据机构标识查询机构名称
		$api.DeptDetails({id:data.deptId},function(result){
			if (false == data.ret) {
				body.find("[name=deptName]").val("");
			};
			body.find("[name=deptName]").val(result.data.name);
		},function(result){
			body.find("[name=deptName]").val("");
		});
	
		//下拉框动态赋值
		var select = 'dd[lay-value=' + data.status + ']';
		body.find("[name=status]").siblings("div.layui-form-select").find('dl').find(select).click();
		//复选框动态赋值
		var roles = "zhgly,fhgly";
		var roleCheckbox = body.find("input[name=roles]");
		for (var i = 0; i < roleCheckbox.length; i++) {
	         var val = roleCheckbox[i].value;
	         if(roles.split(',').indexOf(val)!=-1){
	        	 /* 把DOM元素转成jquery对象，通过jquery对象找到复选框并添加样式
	        	   虽然此种方式可以看到预期的效果，但是点击提交按钮时无法把值传给后台。
	        	 //$(roleCheckbox[i]).next().attr("class","layui-unselect layui-form-checkbox layui-form-checked");
	        	 //$(roleCheckbox[i]).next().addClass("layui-form-checked");
	        	 */
	   	        	 $(roleCheckbox[i]).next().click();
	   	         }
	    	}
	    	form.render();
	     }
	});
}

//加载表格数据
function setTable(paramDeptId){
	//第一个实例
	tableIns = table.render({
	    elem: '#userTable'
	    ,height: 410
	    ,url: '/sys/user/page.json' //数据接口
	    ,where: {deptId: paramDeptId}
	  	,cols: [[ //表头
	 	      {field: 'id', title: 'ID', width:40, sort: true, fixed: 'left'}
	 	      ,{field: 'userName', title: '用户名', width:120}
	 	      ,{field: 'loginNo', title: '工号', width: 80}
	 	      ,{field: 'telephone', title: '电话', width:80, sort: true}
	 	      ,{field: 'deptId', title: '部门编号', width: 80, sort: true}
	 	      ,{field: 'mail', title: '邮箱', width:80} 
	 	      ,{field: 'status', title: '状态', width: 80, sort: true}
	 	      ,{field: 'roles', title: '角色', width: 80, sort: true}
	 	      //,{field: 'remark', title: '描述', width: 80}
	 	      //,{field: 'operator', title: '操作人', width: 135, sort: true}
	 	      //,{field: 'operateTime', title: '操作时间', width: 135, sort: true}
	 	      //,{field: 'operateIp', title: '操作IP', width: 135, sort: true}
	 	     ,{field: 'operate', title: '操作', width: 178, align:'center', toolbar: '#barDemo'}
	 	    ]]
	 	,response: {
			    statusName: 'code' //规定数据状态的字段名称，默认：code
			   ,statusCode: 0 //规定成功的状态码，默认：0
			   ,msgName: 'msg' //规定状态信息的字段名称，默认：msg
			   ,countName: 'total' //规定数据总数的字段名称，默认：count
			   //,dataName: 'data' //规定数据列表的字段名称，默认：data
			 }
	  	,parseData: function(res){ //res 即为原始返回的数据
		    return {
		      "code": res.data.code, //解析接口状态
		      "msg": res.msg, //解析提示文本
		      "total": res.data.total, //解析数据长度
		      "data": res.data.data //解析数据列表
		    };
		  }
	  	,request: {
	  	    pageName: 'pageNo' //页码的参数名称，默认：page
	  	    ,limitName: 'pageSize' //每页数据量的参数名，默认：limit
	  	  }
	    ,page: { //支持传入 laypage 组件的所有参数（某些参数除外，如：jump/elem） - 详见文档
	      layout: ['limit', 'count', 'prev', 'page', 'next', 'skip'] //自定义分页布局
	      //,curr: 5 //设定初始在第 5 页
	      ,groups: 3 //只显示 1 个连续页码
	      ,first: false //不显示首页
	      ,last: false //不显示尾页
	    }
	});
}
});